﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AteneoLibriBusinessLogic.Entities;

namespace AteneoLibri.Account
{
    public partial class RecoveryPassword : System.Web.UI.Page
    {

        protected void Page_PreInit(object sender, EventArgs e)
        {
            if (User.Identity.IsAuthenticated)
            {
                if (User.Identity.Name.Equals(System.Configuration.ConfigurationManager.AppSettings["AdminName"]))
                {
                    Page.MasterPageFile = "~/BackEnd/BackEndMasterPage.Master";
                }
                else
                {
                    Page.MasterPageFile = "~/Account/NewAccountMasterPage.Master";
                }
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnSendEmail_Click(object sender, EventArgs e)
        {
            try
            {
                using (wsAteneoLibri.AteneoLibriServiceClient service = new wsAteneoLibri.AteneoLibriServiceClient())
                {
                    User user = service.getUserByEmail(txtEmailRecovery.Text.Trim());
                    if (user != null)
                    {
                        string recoveryCode = Utility.Utility.generateRecoveryCode(user.Email);

                        // TODO salvare la coppia userId e recoveryCode sul DB
                        RecoveryCode recovery = new RecoveryCode();
                        recovery.GeneratedCode = recoveryCode;
                        recovery.UserId = user.IdUser;

                        if (service.insertRecoveryRow(recovery))
                        {
                            pnlRecovery.Visible = false;
                            pnlSentConfirmEmail.Visible = true;

                            Utility.Mail.MailSender mailSender = new Utility.Mail.MailSender();
                            mailSender.SendMail(txtEmailRecovery.Text.Trim(), "Recupero password", Utility.Mail.MailText.generateRecoveryPasswordBody(recoveryCode), true);
                        }
                        else
                        {
                            // TODO: creare pannello di errore aggiornamento psw
                            Label2.Text = "Si è verificato un errore durante il tentativo di recupero password! Non verranno inoltrate email all'indirizzo inserito.";
                            pnlErrorRecovery.Visible = true;
                        }  
                    }
                    else
                    {
                        Label2.Text = "Non esistono utenti registrati con questa email! Non verranno inoltrate email all'indirizzo inserito.";
                        pnlErrorRecovery.Visible = true;
                    }
                    
                }               
            }
            catch (Exception ex)
            {
                // TODO gestire eccezzione
                Console.WriteLine(ex.Message);
            }
        }
    }
}